package br.kanban.core.busines;

import java.io.Serializable;
import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.TypedQuery;

import br.kanban.core.persistence.Cliente;

@Stateless
public class ClienteBO extends GenericBO<Cliente> implements Serializable{

	private static final long serialVersionUID = 1L;

	@Override
	public List<Cliente> pesquisar(Cliente filtro) {
		StringBuilder sql =new StringBuilder("from Cliente where 1=1 ");
		
		sql.append(!filtro.getNome().isEmpty() ? "and upper(nome) like :nome " : "");
		sql.append(!filtro.getIdentificacao().isEmpty() ? "and upper(identificacao) = :identificacao " : "");
		sql.append(!filtro.getCidade().isEmpty() ? "and upper(cidade) like :cidade " : "");
		sql.append(!filtro.getUf().isEmpty() ? "and upper(uf) = :uf " : "");
		
		TypedQuery<Cliente> qr = getEm().createQuery(sql.toString(), Cliente.class);
		
		if(!filtro.getNome().isEmpty())
			qr.setParameter("nome", "%"+filtro.getNome().toUpperCase()+"%");
		if(!filtro.getIdentificacao().isEmpty())
			qr.setParameter("identificacao", filtro.getIdentificacao().toUpperCase());
		if(!filtro.getCidade().isEmpty())
			qr.setParameter("cidade", "%"+filtro.getCidade().toUpperCase()+"%");
		if(!filtro.getUf().isEmpty())
			qr.setParameter("uf", filtro.getUf().toUpperCase());
		
		return qr.getResultList();
	}

	
}
